package com.yidu.hbatsft.action;
import com.yidu.hbatsft.domain.AtsScheme;
import com.yidu.hbatsft.domain.AtsSchemeAthlete;

import com.yidu.hbatsft.service.AtsSchemeService;
import com.yidu.utils.FileExportTools;
import com.yidu.utils.FileTools;
import com.yidu.utils.Message;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 *@ClassName AtsSchemeController
 *@Description 方案控制类
 *@Author 张雨虹
 *@Date 2020/1/9 9:51
 *@Version 1.0
 **/
@Controller
@RequestMapping("/AtsSchemeAction")
public class AtsSchemeController {
    /**
     * 方案表的service
     */
    @Resource
    AtsSchemeService service;

    @Resource
    FileTools fileTools;

    @RequestMapping("findAllkangfu")
    @ResponseBody
    public Map<String, Object> findAllkangfu(@RequestParam("page") Integer pageNum, @RequestParam("limit") Integer pageSize,String name,Integer userid,String type){
        System.out.println("开始查询");
        System.out.println(userid);
        //new出一个对象
        AtsScheme atsScheme= new AtsScheme();
        //拿到名字
        atsScheme.setSchemeName(name);
        //将用户ID放入教练ID
        atsScheme.setCoachId(userid);
        //将用户ID放入一个暂不用的属性
        atsScheme.setRemark(String.valueOf(userid));

        //创建一个List集合
        List<AtsScheme> list =null;
        //创建Int对象为0
        int count=0;
        System.out.println("开始查询");
        if(type.equals("教练")){//判断登录账号是教练
            //调用教练查询所有方法用集合接收
            list =service.findAllCoachkangfu(pageNum,pageSize,atsScheme);
            //调用教练查询条数方法用count接收
            count=service.CoachkangfuCount(atsScheme);
        }else if(type.equals("专家")){//判断登录账号是专家
            //调用专家所有查询方法用集合接收
            list =service.findAllExperkangfu(pageNum,pageSize,atsScheme);
            //调用专家查询条数方法用count接收
            count=service.ExperkangfuCount(atsScheme);
        }if(type.equals("领导")){//判断登录账号是领导
            //调用领导所有查询方法用集合接收
            list =service.findAllLeaderkangfu(pageNum,pageSize,atsScheme);
            //调用领导查询条数方法用count接收
            count=service.LeaderkangfuCount(atsScheme);
        }if(type.equals("运动员")){//判断登录账号是运动员
            //调用运动员所有查询方法用集合接收
            list =service.findAllAthletekangfu(pageNum,pageSize,atsScheme);
            //调用运动查询条数方法用count接收
            count=service.AthletekangfuCount(atsScheme);
        }

        //创建一个Map集合
        Map<String, Object> map=new HashMap<String, Object>();
        //将Code设置为0
        map.put("code",0);
        //将msg设置为空
        map.put("msg","");
        //将count放入行数
        map.put("count",count);
        //将list集合放入date
        map.put("data",list);
        //返回集合
        return map;
    }

    /**
     * 增加或修改的方法
     * @param atsScheme
     * @return
     */
    @RequestMapping("addorupdate")
    @ResponseBody
    public Message addorupdate(AtsScheme atsScheme, AtsSchemeAthlete atsSchemeAthlete,String ids,String type,Integer coachId,MultipartFile file11,MultipartFile file22,MultipartFile file33,MultipartFile File,Integer feedback){
        int rows=0;
        // 其日历字段已由当前日期和时间初始化：
        Calendar a=Calendar.getInstance();
        //获取年份
        atsScheme.setYear(a.get(Calendar.YEAR));
        //获取月份
        atsScheme.setMonth(a.get(Calendar.MONTH)+1);//由于月份是从0开始的所以加1
        //date对象
        Date date=new Date();
        /*设置日期格式yyy-MM-dd hh:mm:ss*/
        SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd");
        System.out.println("参数"+feedback);
        if(feedback!=null&&feedback==1){//参数不为空或等于1
            //获取反馈时间
            atsScheme.setResultTime(sdf.format(date));
        }
        //获取方案类型
        atsScheme.setSchemeType(type);
        try {
            if(file11!=null){//文件1不为为空
                if(file11.getSize()>0) {//文件大小大于0
                    //调用工具类方法
                    String fileone=fileTools.saveFile("images",file11);
                    //获取文件1
                    atsScheme.setFile1(fileone);
                }
            }
            if(file22!=null){//文件2不为为空
                if(file22.getSize()>0){//文件大小大于0
                    //调用工具类方法
                    String filetwo=fileTools.saveFile("images",file22);
                    //获取文件2
                    atsScheme.setFile2(filetwo);
                }
            }
            if(file33!=null){//文件3不为为空
               if(file33.getSize()>0){//文件大小大于0
                   //调用工具类方法
                   String filethere=fileTools.saveFile("images",file33);
                   //获取文件3
                   atsScheme.setFile3(filethere);
               }
            }

            if(File!=null){//反馈文件不为空
               if(File.getSize()>0){//文件大小大于0
                   //调用工具类方法
                   String file=fileTools.saveFile("images",File);
                   //获取文件3
                   atsScheme.setResultFile(file);
               }
           }

        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取Isva为未删除状态
        atsScheme.setIsva(1);
        //判断方案id是否为空
        if(atsScheme.getSchemeId()==null||"".equals(atsScheme.getSchemeId())){
            //为空则调用新增方法用rows集合接收
            rows = service.add(atsScheme, atsSchemeAthlete,ids);
        }else if(atsScheme.getSchemeId()!=null||!"".equals(atsScheme.getSchemeId())){
            //不为空则调用修改方法用rows集合接收
            rows = service.update(atsScheme, atsSchemeAthlete,ids);
        }
        //new出信息对象
        Message message = new Message();
        if(rows>0){//判断rows大于0
            //获取NUM值为1
            message.setNum(1);
        }else {
            //获取NUM值为1
            message.setNum(0);
        }
        //返回信息对象
        return message;
    }



    /**
     * 根据id查询的方法
     * @param id
     * @return
     */
    @RequestMapping("finbyid")
    @ResponseBody
    public AtsScheme finbyid(Integer id){
        //调用根据地查询方法用对象接收
        AtsScheme atsScheme = service.selectByPrimaryKey(id);
        //返回对象
        return atsScheme;
    }

    /**
     * 逻辑删除
     * @param id
     * @return
     * 张雨虹
     */
    @RequestMapping("updatestate")
    @ResponseBody
    public Message updatestate(Integer id){
        //调用根据id修改方法用int对象接收
        int rows=service.updatestate(id);
        //new出信息对象
        Message message = new Message();

        if(rows>0){//判断rows大于0
            //获取NUM值为1
            message.setNum(1);
        }else {
            //获取NUM值为1
            message.setNum(0);
        }
        //返回信息对象
        return message;
    }
    /**
     * 批量逻辑删除
     * @param ids
     * @return
     * 张雨虹
     */
    @RequestMapping("updatestateall")
    @ResponseBody
    public Message updatestateall(String ids){
        //创建rows为0
        int rows=0;
        if(ids!=null){//判断ids不为空
            //根据“，”符号分割
            String[] split = ids.split(",");
            //用split的长度循环修改
            for (int a = 0; a < split.length; a++) {
                //拿到当前分割出的方案id
                String s = split[a];
                //调用修改方法用rows接收
                rows=service.updatestate(Integer.valueOf(s));
            }
        }
        //new出一个信息对象
        Message message = new Message();
        if(rows>0){//判断rows不为0
            message.setNum(1);//获取NUM值为1
        }else {
            message.setNum(0);//获取NUM值为1
        }
        //返回信息对象
        return message;
    }

    /**
     * 导出方案doc文档方法
     * @param id
     * @param response
     * @param request
     */
    @RequestMapping("FileExpert")
    public void FileExpert(Integer id, HttpServletResponse response, HttpServletRequest request){
        System.out.println("id是"+id);
        //调用根据id查询方法用对象接收
        AtsScheme atsScheme = service.selectByPrimaryKey(id);
        //创建一个map集合
        Map<String, Object> map = new HashMap();
        System.out.println("方案名称是"+atsScheme.getSchemeName());
        //判断方案名称不为空
        if(atsScheme.getSchemeName()!=null){
            //将1设置为方案名称
            map.put("1",atsScheme.getSchemeName());
        }else{
            //为空则设置为无
            map.put("1","无");
        }
        //判断年份不为空
        if(atsScheme.getYear()!=null){
            //将2设置为年份
            map.put("2",atsScheme.getYear());
        }else{
            //为空则设置为无
            map.put("2","无");
        }
        //判断月份不为空
        if(atsScheme.getMonth()!=null){
            //将3 设置为月份
            map.put("3",atsScheme.getMonth());
        }else{
            //为空则设置为无
            map.put("3","无");
        }
        //判断方案类型不为空
        if(atsScheme.getSchemeType()!=null){
            //将4设置为方案类型
            map.put("4",atsScheme.getSchemeType());
        }else{
            //为空则设置为无
            map.put("4","无");
        }
        //判断方案名称不为空
        if(atsScheme.getCoachName()!=null){
            //将5设置为教练名称
            map.put("5",atsScheme.getCoachName());
        }else{
            //为空则设置为无
            map.put("5","无");
        }
        //判断反馈时间不为空
        if(atsScheme.getResultTime()!=null){
            //将6设置为反馈时间
            map.put("6",atsScheme.getResultTime());
        }else{
            //为空则设置为无
            map.put("6","无");
        }
        //判断实施情况不为空
        if(atsScheme.getResultExp()!=null){
            //将7设置为实施情况
            map.put("7",atsScheme.getResultExp());
        }else{
            //为空则设置为无
            map.put("7","无");
        }
        //判断实施效果不为空
        if(atsScheme.getResultEffect()!=null){
            //将8设置为实施效果
            map.put("8",atsScheme.getResultEffect());
        }else{
            //为空则设置为无
            map.put("8","无");
        }
        //工具类调用导出doc文档方法
        FileExportTools.Export2GeotechnicalLayeringTable("方案导出模板.doc",map,8,response,request);
    }
}
